package com.circle.interests.biz.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.circle.interests.biz.entity.PrizeWinRecord;
import com.circle.prize.library.api.dto.PrizeReceiveResultDto;
import com.circle.prize.library.api.dto.PrizeWinResultDto;
import com.circle.prize.library.api.dto.UserPrizeDto;

/**
 * <p>
 * 奖品发放记录 服务类
 * </p>
 *
 * @author generator
 * @since 2021-12-05
 */
public interface IPrizeWinRecordService extends IService<PrizeWinRecord> {

    /**
     * 中奖
     *
     * @param sceneType 场景类型
     * @param sceneId   场景id
     * @param openId    用户openId
     * @param prizeCode 奖品编号
     * @param count     奖品总数
     * @param price     奖品金额
     * @return 中奖结果
     */
    PrizeWinResultDto winPrize(Integer sceneType, String sceneId, String openId, String prizeCode, Integer count, Integer price);

    /**
     * 领奖
     *
     * @param recordId       中奖记录id
     * @param writeOffQrCode 核销二维码
     * @return 领奖结果
     */
    PrizeReceiveResultDto receivePrize(Long recordId, String writeOffQrCode);

    /**
     * 奖品过期
     *
     * @param recordId 中奖记录id
     */
    void expirePrize(Long recordId);

    /**
     * 奖品回收
     *
     * @param recordId 中奖记录id
     */
    void recyclePrize(Long recordId);

    /**
     * 奖品核销
     *
     * @param sceneType    场景类型
     * @param sceneId      场景id
     * @param phoneNumber  用户手机号
     * @param writeOffCode 核销码
     * @return 核销结果
     */
    UserPrizeDto writeOff(Integer sceneType, String sceneId, String phoneNumber, String writeOffCode, String remark);
}
